package com.xiaobao.campusLostFoundAfter.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

//解决跨域问题
@Configuration
public class CorsConfig {

    /**
     * 配置跨域过滤器
     * 该方法用于创建和配置CorsFilter bean，以处理跨域请求配置允许所有来源、所有请求头、所有HTTP方法进行跨域调用，并支持携带凭证的请求
     * 这对于前端应用与后端API分隔在不同域名下时非常有用
     *
     * @return CorsFilter 返回配置好的跨域过滤器实例
     */
    @Bean
    public CorsFilter corsFilter() {
        // 创建一个新地跨域配置
        CorsConfiguration config = new CorsConfiguration();
        // 允许所有域名进行跨域调用
        config.addAllowedOriginPattern("*");
        // 允许任何请求头
        config.addAllowedHeader("*");
        // 允许任何方法（POST、GET等）
        config.addAllowedMethod("*");
        // 允许携带凭证
        config.setAllowCredentials(true);

        // 创建一个新的URL基于的跨域配置源
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        // 将跨域配置注册到所有接口
        source.registerCorsConfiguration("/**", config);

        // 根据配置源创建并返回一个新地跨域过滤器实例
        return new CorsFilter(source);
    }
}  